import { pgTable, uuid, varchar, smallint, uniqueIndex } from 'drizzle-orm/pg-core';
import { sql } from 'drizzle-orm';
import { DICT_STATUS } from '@nbase/shared';
import { auditFields } from './audit-fields';

/**
 * 系统-字典表
 */
export const sysDict = pgTable(
  'sys_dict',
  {
    /** 字典ID（主键） */
    id: uuid('id').primaryKey().default(sql`uuidv7()`),
    /** 字典编码（唯一） */
    code: varchar('code', { length: 128 }).notNull(),
    /** 字典名称 */
    name: varchar('name', { length: 128 }).notNull(),
    /** 状态（1.启用 2.禁用） */
    status: smallint('status').notNull().default(DICT_STATUS.ACTIVE),
    /** 描述 */
    description: varchar('description', { length: 256 }),
    ...auditFields(),
  },
  (table) => [
    uniqueIndex('sys_dict_code_unique_idx').on(table.code),
  ]
);

export type SysDict = typeof sysDict.$inferSelect;
export type NewSysDict = typeof sysDict.$inferInsert;

